# -*- coding: utf-8 -*-
"""
@Time    : 2024/7/18 15:15 
@Author  : ZhangShenao 
@File    : 2.使用SQLDatabaseChain执行数据库操作.py
@Desc    : 使用LangChain内置的SQLDatabaseChain,来执行数据库查询操作
"""
import os

import dotenv
from langchain_community.utilities import SQLDatabase
from langchain_experimental.sql import SQLDatabaseChain
from langchain_openai import ChatOpenAI

# 加载环境变量
dotenv.load_dotenv()

# 连接到本地SQLite数据库
db = SQLDatabase.from_uri(database_uri='sqlite:///flower_shop.db')

# 创建LLM
llm = ChatOpenAI(model_name='gpt-3.5-turbo',
                 openai_api_base=os.getenv('OPENAI_API_BASE'),
                 temperature=0.,  # 这里设置temperature=0,意味着模型的输出会更加确定
                 verbose=True,
                 )

# 创建SQLDatabaseChain链实例,它通过LLM来执行数据库查询操作
sql_chain = SQLDatabaseChain(llm=llm, database=db, verbose=True)

# 对鲜花相关的问题进行提问
print(sql_chain.run('有多少种不同的鲜花？'))
print(sql_chain.run('哪种鲜花的存货数量最少？'))
print(sql_chain.run('鲜花的平均销售价格是多少？'))
print(sql_chain.run('从法国进口的鲜花有多少种？'))
print(sql_chain.run('哪种鲜花的销售量最高？'))
